import Cookie from 'js-cookie'
export default {
    state: {
        isCollapse: false, //控制菜单的显示与隐藏
        breadList: [
            {
                path: '/',
                name: 'home',
                label: '首页',
                icon: 's-home',
                url: 'Home/Home'
            },
        ], // 面包屑数据
        menu: []  //菜单数据
    },
    mutations: {
        // 改变菜单显示与隐藏的方法
        changeMenu(state){
            state.isCollapse = !state.isCollapse
        },
        // 更新面包屑数据
        selectMenu(state,value){
            console.log(value,'value')
            // 判断添加的数据是否为首页
            if(value.name !== 'home'){
                const index = state.breadList.findIndex(item => item.name === value.name)
                // 如果不存在
                if(index === -1){
                    state.breadList.push(value)
                }
            }
        },
        // 删除指定的 tag 数据
        closeTag(state,item){
            console.log(item,'item')
            const index = state.breadList.findIndex(value => value.name === item.name)
            // splice方法  => 删除  第一个参数是删除的位置，第二个参数是删除的数量
            state.breadList.splice(index,1)
        },
        // 设置菜单数据
        setMenu(state,value){
            state.menu = value
            Cookie.set('menu',JSON.stringify(value))
        },
        // 动态注册路由
        addMenu(state,router){
            // 判断缓存中是否有数据
            if(!Cookie.get('menu')) return
            const menu = JSON.parse(Cookie.get('menu'))
            // 更新数据
            state.menu = menu
            // 组装动态路由的数据
            const menuArray = []
            menu.forEach(item => {
                if(item.children){
                    item.children = item.children.map(item => {
                        item.component = () => import(`../views/${item.url}`)
                        return item
                    })
                    menuArray.push(...item.children)
                }else{
                    item.component = () => import(`../views/${item.url}`)
                    menuArray.push(item)
                }
            })
            console.log(menuArray,'menuArray')
            // 路由的动态添加
            menuArray.forEach(item => {
                router.addRoute('Main',item)
            })
        }
    }
}